#!/bin/bash

# 定义项目根目录
PROJECT_ROOT="/Users/wangqinqing/work/meeting-room-reservation"

# 定义路由配置文件路径
ROUTES_FILE="${PROJECT_ROOT}/src/router/modules/meetingManagementRoutes.ts"

# 定义模板目录路径
TEMPLATE_DIR="${PROJECT_ROOT}/src/views/rooms/list"

# 定义目标视图目录路径
VIEWS_DIR="${PROJECT_ROOT}/src/views"

# 定义日志文件路径
LOG_FILE="${PROJECT_ROOT}/logs/a.sh.log"

# 创建日志文件目录（如果不存在）
mkdir -p "$(dirname "$LOG_FILE")"

# 日志函数
log() {
  echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE"
}

# 检查模板文件是否存在
check_template_exists() {
  if [ ! -d "${TEMPLATE_DIR}" ]; then
    log "模板目录 ${TEMPLATE_DIR} 不存在"
    exit 1
  fi
  log "模板目录 ${TEMPLATE_DIR} 存在"
}

# 读取路由配置文件并提取路径和文件名
extract_paths_and_filenames() {
  log "开始提取路径和文件名"
  # 使用正则表达式提取路径并去掉后缀，获取文件名部分
  sed -nE "s|component: \(\) => import\(['\"]/@/views/([^'\"/]+/)([^'\".]+)\.vue['\"]\),|\1\2|p" "$ROUTES_FILE" | \
  while read -r line; do
    # 提取路径和文件名
    dir=$(dirname "$line")
    file=$(basename "$line")

    # 去掉 @/views 前缀
    dir=${dir#@/views/}

    if [[ -n "$dir" && -n "$file" ]]; then
      log "line：$line"
      log "路径：$dir"
      log "文件名：$file"
      generate_code "$dir" "$file"
      rename_index_vue "$dir" "$file"
    else
      log "路径或文件名提取错误: $line"
    fi
  done
  log "路径和文件名提取完成"
}

# 根据路径和文件名生成代码
generate_code() {
  local dir="$1"
  local file="$2"
  local full_path="${VIEWS_DIR}/${dir}"

  # 创建目录（如果不存在）
  mkdir -p "$full_path"
  log "创建目录: $full_path"

  # 检查目标文件是否已经存在
  if [ -f "${full_path}/${file}.vue" ]; then
    log "文件 ${full_path}/${file}.vue 已经存在，跳过复制和重命名"
    return
  fi

  # 复制模板文件到目标目录并重命名为新的文件名
  cp -r "${TEMPLATE_DIR}/." "$full_path"
  mv "$full_path/index.vue" "$full_path/${file}.vue"
  log "复制模板文件到 $full_path 并重命名为 ${file}.vue"
}

# 重命名原来的 index.vue 文件
rename_index_vue() {
  local dir="$1"
  local file="$2"
  local full_path="${VIEWS_DIR}/${dir}"

  # 检查原来的 index.vue 文件是否存在
  if [ -f "${full_path}/index.vue" ]; then
    mv "${full_path}/index.vue" "${full_path}/${file}.vue"
    log "重命名 ${full_path}/index.vue 为 ${full_path}/${file}.vue"
  else
    log "文件 ${full_path}/index.vue 不存在"
  fi
}

# 主函数
main() {
  log "脚本开始执行"
  check_template_exists
  extract_paths_and_filenames
  log "脚本执行完成"
}

# 运行主函数
main

#  /Users/wangqinqing/work/meeting-room-reservation/src/router/modules/a.sh